package org.yeruyi.common.adapter;

import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;

import org.yeruyi.common.ui.viewholder.RoyBaseRecyclerViewHolder;

import java.util.ArrayList;
import java.util.List;

/**
 * Author：yeruyi
 * Date：2017/4/3
 * Version：v1.0
 * Note：
 * 2018年1月24日 增加注释
 */

public abstract class RecycleAdapter<T> extends RecyclerView.Adapter<RoyBaseRecyclerViewHolder> {

    private List<T> mData;

    /**
     * 构建方法，
     * @param data 数据源
     */
    public RecycleAdapter(List<T> data) {
        if (data == null) {
            this.mData = new ArrayList<>();
        } else {
            this.mData = data;
        }
    }

    public void updateData(List<T> data) {
        this.mData = data;
        notifyDataSetChanged();
    }

    public void appendData(T data) {
        this.mData.add(data);
        notifyDataSetChanged();
    }

    /**
     * 获取holder
     *
     * @param parent   视图
     * @param viewType 视图位置
     * @return
     */
    public abstract RoyBaseRecyclerViewHolder getHolder(ViewGroup parent, int viewType);

    /**
     * 创建视图
     *
     * @param parent   视图
     * @param viewType 视图位置
     * @return
     */
    @Override
    public RoyBaseRecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return getHolder(parent, viewType);
    }

    /**
     * 数据绑定
     *
     * @param holder
     * @param position
     */
    @Override
    public void onBindViewHolder(RoyBaseRecyclerViewHolder holder, int position) {
        holder.updateView(mData.get(position));
    }

    @Override
    public int getItemCount() {
        return mData != null ? mData.size() : 0;
    }

}